#include "key.h"
#include "delay.h"
#include "oled.h"
#include "usart.h"

void Key_Init(void) // ������ʼ��
{

	GPIO_InitTypeDef GPIO_InitStructure;
	// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //����AFIOʱ��
	// GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //��ֹJTAG����

	RCC_APB2PeriphClockCmd(K_L_CLK | K_U_CLK | K_D_CLK | K_R_CLK, ENABLE); // ʹ��PORTA,PORTEʱ��

	GPIO_InitStructure.GPIO_Pin = K_R_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	  // ���ó���������GPIO_Mode_IPD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO���ٶ�Ϊ50MHz
	GPIO_Init(K_R_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = K_D_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	  // ���ó���������GPIO_Mode_IPD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO���ٶ�Ϊ50MHz
	GPIO_Init(K_D_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = K_U_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	  // ���ó���������GPIO_Mode_IPD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO���ٶ�Ϊ50MHz
	GPIO_Init(K_U_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = K_L_PIN;			  // GPIO 6
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;	  // ���ó���������GPIO_Mode_IPD;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO���ٶ�Ϊ50MHz
	GPIO_Init(K_L_PORT, &GPIO_InitStructure);		  // ��ʼ��GPIOB6,7,8,9
}
/*

*/
u8 KEY_Scan(u8 mode)
{
	static u8 key_up = 1; // �������ɿ���־
	if (mode)
		key_up = 1; // ֧������
	if (key_up && (K_L == 0 || K_U == 0 || K_D == 0 || K_R == 0))
	{
		delay_ms(10); // ȥ����
		key_up = 0;
		if (K_L == 0)
			return 1;
		else if (K_U == 0)
			return 2;
		else if (K_D == 0)
			return 3;
		else if (K_R == 0)
			return 4;
	}
	else if (K_L == 1 && K_U == 1 && K_D == 1 && K_R == 1)
		key_up = 1;
	return 0; // �ް�������
}
